package GUI;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;

import BaseDatos.BD;
import Codigo.PatronErrores;
import JSON.JSONException;
import JSON.JSONObject;

import java.awt.Color;
import org.freixas.jcalendar.JCalendarCombo;

public class FrameVentasCamarero extends JFrame {

	private JPanel contentPane;
	private JTextField textoVentaNombCamar;
	private JTable tablaConsultVentaCamar;
	private JScrollPane scrollPane;
	private File file = new File("./fondo.jpg");
	private JButton btnConsultaDeCamarero;
	private final int limiteString=30;
	private BD baseDatos = new BD();
	private JCalendarCombo fechaDeVentas;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					FrameVentasCamarero frame = new FrameVentasCamarero();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 * @throws IOException 
	 */
	public FrameVentasCamarero() throws IOException {
		
		
		BufferedImage tmpImagen=ImageIO.read(file); 
		bgBorder fondo = new bgBorder(tmpImagen);
		
		setTitle("Consulta de Ventas por Camarero");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 620, 464);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		///////Foto del Panel///////	
		contentPane.setBorder(fondo);
		
		JLabel lblNombreDelEmpleado = new JLabel("Nombre del Empleado");
		lblNombreDelEmpleado.setForeground(Color.WHITE);
		lblNombreDelEmpleado.setBounds(43, 34, 157, 14);
		contentPane.add(lblNombreDelEmpleado);
		
		textoVentaNombCamar = new JTextField();
		textoVentaNombCamar.setBounds(43, 59, 157, 20);
		contentPane.add(textoVentaNombCamar);
		textoVentaNombCamar.setColumns(10);
		
		btnConsultaDeCamarero = new JButton("Consulta de Camarero");
		btnConsultaDeCamarero.setBounds(43, 145, 157, 34);
		contentPane.add(btnConsultaDeCamarero);
		
		scrollPane = new JScrollPane();
		scrollPane.setBounds(238, 34, 332, 273);
		contentPane.add(scrollPane);
		
		tablaConsultVentaCamar = new JTable();
		scrollPane.setViewportView(tablaConsultVentaCamar);
		tablaConsultVentaCamar.setModel(new DefaultTableModel(
			new Object[][] {
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
				{null, null},
			},
			new String[] {
					"Mesa", "Coste"
			}
		));
		
		fechaDeVentas = new JCalendarCombo();
		fechaDeVentas.setBounds(43, 101, 158, 20);
		contentPane.add(fechaDeVentas);
		
		
		textoVentaNombCamar.addKeyListener(new KeyListener(){
			
			public void keyTyped(KeyEvent e)
			
			{if (textoVentaNombCamar.getText().length()== limiteString)
			
			     e.consume();
			
			}
			public void keyPressed(KeyEvent arg0) {		}
			public void keyReleased(KeyEvent arg0) {	}
				});		
		
		btnConsultaDeCamarero.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String nomCamareroVenta=textoVentaNombCamar.getText();
				if ((nomCamareroVenta.equals(""))) {
					PatronErrores.showMessage(5);}
				if (baseDatos.existeUsuario(nomCamareroVenta))
				{
					if(baseDatos.estaActivo(nomCamareroVenta))
					{
						String fecha = fechaDeVentas.getSelectedItem().toString();
						String[] datosFecha = fecha.split(" ");
			    	    String dia = datosFecha[1];
						String  mes = calculoMes(datosFecha[3]);
						String anno = datosFecha[5];
						fecha = anno + "-" + mes + "-" + dia;
						ArrayList<JSONObject> lista = baseDatos.listaFacturaFecha(nomCamareroVenta,fecha);
						if (lista != null)
						{
							Iterator<JSONObject> it = lista.iterator();
							int i = 0;
							while((i < tablaConsultVentaCamar.getRowCount()) && it.hasNext())
							{
								try {
									JSONObject factura = it.next();
									String idFactura = factura.getString("id");
									String precio = baseDatos.getPrecioFactura(idFactura);
									String mesa = factura.getString("mesa");
									tablaConsultVentaCamar.setValueAt(mesa, i, 0);
									tablaConsultVentaCamar.setValueAt(precio, i, 1);
									i++;
								} catch (JSONException e1) {
									// TODO Auto-generated catch block
									e1.printStackTrace();
								}
							}
						}
						else
						{
							JOptionPane.showMessageDialog(null,"No existen ventas asociada a ese camarero en esa fecha");
						}
					}
					else
					{
						PatronErrores.showMessage(0);
					}
				}
				else
				{
					PatronErrores.showMessage(0);
				}
				
				
			}
		});
	}
	
	public String calculoMes(String mes)
	 {
	 
		if (mes.equals("enero")) return "01";  
		else if (mes.equals("febrero")) return "02"; 
		else if (mes.equals("marzo"))return "03";
		else if (mes.equals("abril")) return "04";
		else if (mes.equals("mayo")) return "05";
		else if (mes.equals("junio")) return "06";
		else if (mes.equals("julio")) return "07";
		else if (mes.equals("agosto")) return "08";
		else if (mes.equals("septiembre")) return "09";
		else if (mes.equals("octubre")) return "10";
		else if (mes.equals("noviembre")) return "11";	
		else return "12";
	 
	 }
}
